Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


sbapp/kivymd/tools/release/make_release.py 0.2.2 (399da923) Text, 10.00 KB

T8b949e# Copyright (c) 2019-2022 Artem Bulgakov
T8b949e#
T8b949e# This file is distributed under the terms of the same license,
T8b949e# as the Kivy framework.

T8b949e"""
Script to make release
======================

Run this script before release (before deploying).

What this script does:

* Undo all local changes in repository
* Update version in `__init__.py`, `README.md`
* Format files
* Rename file "unreleased.rst" to version, add to index.rst
* Commit "Version ..."
* Create tag
* Add `unreleased.rst` to Changelog, add to `index.rst`
* Commit
* Git push
"""

Tff7b72import T7ee787os
Tff7b72import T7ee787re
Tff7b72import T7ee787subprocess
Tff7b72import T7ee787sys

Tff7b72from T7ee787kivymdT7ee787.T7ee787toolsT7ee787.T7ee787argument_parser Tff7b72import Te6edf3ArgumentParserWithHelp
Tff7b72from T7ee787kivymdT7ee787.T7ee787toolsT7ee787.T7ee787releaseT7ee787.T7ee787git_commands Tff7b72import Tb4b4b4(
Te6edf3commandTb4b4b4,
Te6edf3get_previous_versionTb4b4b4,
Te6edf3git_cleanTb4b4b4,
Te6edf3git_commitTb4b4b4,
Te6edf3git_pushTb4b4b4,
Te6edf3git_tagTb4b4b4,
Tb4b4b4)
Tff7b72from T7ee787kivymdT7ee787.T7ee787toolsT7ee787.T7ee787releaseT7ee787.T7ee787update_icons Tff7b72import Te6edf3update_icons


Tff7b72def Td2a8ffrun_pre_commitTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e"""Run pre-commit."""

Tff7b72tryTb4b4b4:
Te6edf3commandTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ffpre-commitTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffrunTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--all-filesTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72except Te6edf3subprocessTff7b72.Td2a8ffCalledProcessErrorTb4b4b4:
Tff7b72pass

Te6edf3git_commitTb4b4b4(Ta5d6ff"Ta5d6ffRun pre-commitTa5d6ff"Tb4b4b4, Te6edf3allow_errorTff7b72=Tff7b72TrueTb4b4b4)


Tff7b72def Td2a8ffreplace_in_fileTb4b4b4(Te6edf3patternTb4b4b4, Te6edf3replTb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4:
T8b949e"""Replace one `pattern` match to `repl` in file `file`."""

Te6edf3file_content Tff7b72= Tffa657openTb4b4b4(Te6edf3fileTb4b4b4, Ta5d6ff"Ta5d6ffrtTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)
Te6edf3new_file_content Tff7b72= Te6edf3reTff7b72.Td2a8ffsubTb4b4b4(Te6edf3patternTb4b4b4, Te6edf3replTb4b4b4, Te6edf3file_contentTb4b4b4, T79c0ff1Tb4b4b4, Te6edf3reTff7b72.Td2a8ffMTb4b4b4)
Tffa657openTb4b4b4(Te6edf3fileTb4b4b4, Ta5d6ff"Ta5d6ffwtTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwriteTb4b4b4(Te6edf3new_file_contentTb4b4b4)
Tff7b72return Tff7b72not Te6edf3file_content Tff7b72== Te6edf3new_file_content


Tff7b72def Td2a8ffupdate_init_pyTb4b4b4(Te6edf3versionTb4b4b4, Te6edf3is_releaseTb4b4b4, Te6edf3testTb4b4b4: Tffa657bool Tff7b72= Tff7b72FalseTb4b4b4)Tb4b4b4:
T8b949e"""Change version in `kivymd/__init__.py`."""

Te6edf3init_file Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffabspathTb4b4b4(Ta5d6ff"Ta5d6ffkivymd/__init__.pyTa5d6ff"Tb4b4b4)
Te6edf3init_version_regex Tff7b72= Ta5d6ffrTa5d6ff"Ta5d6ff(?<=^__version__ = [Ta5d6ff'Tffea00\"Ta5d6ff])[^Ta5d6ff'Tffea00\"Ta5d6ff]+(?=[Ta5d6ff'Tffea00\"Ta5d6ff]$)Ta5d6ff"
Te6edf3success Tff7b72= Te6edf3replace_in_fileTb4b4b4(Te6edf3init_version_regexTb4b4b4, Te6edf3versionTb4b4b4, Te6edf3init_fileTb4b4b4)

Tff7b72if Te6edf3test Tff7b72and Tff7b72not Te6edf3successTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffCouldnTa5d6ff'Ta5d6fft update __init__.py file.Ta5d6ff"Tb4b4b4, Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)

Te6edf3init_version_regex Tff7b72= Ta5d6ffrTa5d6ff"Ta5d6ff(?<=^release = )(True|False)(?=$)Ta5d6ff"
Te6edf3success Tff7b72= Te6edf3replace_in_fileTb4b4b4(Te6edf3init_version_regexTb4b4b4, Tffa657strTb4b4b4(Te6edf3is_releaseTb4b4b4)Tb4b4b4, Te6edf3init_fileTb4b4b4)

Tff7b72if Te6edf3test Tff7b72and Tff7b72not Te6edf3successTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffCouldnTa5d6ff'Ta5d6fft update __init__.py file.Ta5d6ff"Tb4b4b4, Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)


Tff7b72def Td2a8ffupdate_readmeTb4b4b4(Te6edf3previous_versionTb4b4b4, Te6edf3versionTb4b4b4, Te6edf3testTb4b4b4: Tffa657bool Tff7b72= Tff7b72FalseTb4b4b4)Tb4b4b4:
T8b949e"""Change version in `README.md`."""

Te6edf3readme_file Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffabspathTb4b4b4(Ta5d6ff"Ta5d6ffREADME.mdTa5d6ff"Tb4b4b4)
Te6edf3readme_version_regex Tff7b72= Ta5d6ffrfTa5d6ff"Ta5d6ff(?<=Ta5d6ff\Ta5d6ff[)Tffd700{Te6edf3previous_versionTffd700}Ta5d6ff[ Ta5d6ff\Ta5d6ff-*Ta5d6ff\Ta5d6ffw^Ta5d6ff\Ta5d6ff]Ta5d6ff\Ta5d6ffn]*(?=Ta5d6ff\Ta5d6ff])Ta5d6ff"
Te6edf3success Tff7b72= Te6edf3replace_in_fileTb4b4b4(Te6edf3readme_version_regexTb4b4b4, Te6edf3versionTb4b4b4, Te6edf3readme_fileTb4b4b4)

Tff7b72if Te6edf3test Tff7b72and Tff7b72not Te6edf3successTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffCouldnTa5d6ff'Ta5d6fft update README.md file.Ta5d6ff"Tb4b4b4, Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)

Te6edf3readme_install_version_regex Tff7b72= Tb4b4b4(
Ta5d6ffrfTa5d6ff"Ta5d6ff(?<=pip install kivymd==)Tffd700{Te6edf3previous_versionTffd700}Ta5d6ff(?=Ta5d6ff\Ta5d6ffn```)Ta5d6ff"
Tb4b4b4)
Te6edf3success Tff7b72= Te6edf3replace_in_fileTb4b4b4(
Te6edf3readme_install_version_regexTb4b4b4, Te6edf3versionTb4b4b4, Te6edf3readme_file
Tb4b4b4)

Tff7b72if Te6edf3test Tff7b72and Tff7b72not Te6edf3successTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffCouldnTa5d6ff'Ta5d6fft update README.md file.Ta5d6ff"Tb4b4b4, Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)

Te6edf3readme_buildozer_version_regex Tff7b72= Ta5d6ffrfTa5d6ff"Ta5d6ff(?<=, kivymd==)Tffd700{Te6edf3previous_versionTffd700}Ta5d6ff(?=, )Ta5d6ff"
Te6edf3success Tff7b72= Te6edf3replace_in_fileTb4b4b4(
Te6edf3readme_buildozer_version_regexTb4b4b4, Te6edf3versionTb4b4b4, Te6edf3readme_file
Tb4b4b4)

Tff7b72if Te6edf3test Tff7b72and Tff7b72not Te6edf3successTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffCouldnTa5d6ff'Ta5d6fft update README.md file.Ta5d6ff"Tb4b4b4, Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)


Tff7b72def Td2a8ffmove_changelogTb4b4b4(
Te6edf3index_fileTb4b4b4,
Te6edf3unreleased_fileTb4b4b4,
Te6edf3previous_versionTb4b4b4,
Te6edf3version_fileTb4b4b4,
Te6edf3versionTb4b4b4,
Te6edf3testTb4b4b4: Tffa657bool Tff7b72= Tff7b72FalseTb4b4b4,
Tb4b4b4)Tb4b4b4:
T8b949e"""Edit unreleased.rst and rename to <version>.rst."""

T8b949e# Read unreleased changelog
Te6edf3changelog Tff7b72= Tffa657openTb4b4b4(Te6edf3unreleased_fileTb4b4b4, Ta5d6ff"Ta5d6ffrtTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)

T8b949e# Edit changelog
Te6edf3changelog Tff7b72= Te6edf3reTff7b72.Td2a8ffsubTb4b4b4(
Ta5d6ffrTa5d6ff"Ta5d6ffUnreleasedTa5d6ff\Ta5d6ffn----------Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3versionTffd700}Tffea00\nTffd700{Ta5d6ff'Ta5d6ff-Ta5d6ff' Tff7b72* Tb4b4b4(T79c0ff1 Tff7b72+ Tffa657lenTb4b4b4(Te6edf3versionTb4b4b4)Tb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4,
Te6edf3changelogTb4b4b4,
T79c0ff1Tb4b4b4,
Te6edf3reTff7b72.Td2a8ffMTb4b4b4,
Tb4b4b4)
Te6edf3changelog Tff7b72= Te6edf3reTff7b72.Td2a8ffsubTb4b4b4(
Ta5d6ffrTa5d6ff"Ta5d6ff(?<=See on GitHub: `)branch masterTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6fftag Tffd700{Te6edf3versionTffd700}Ta5d6ff"Tb4b4b4,
Te6edf3changelogTb4b4b4,
T79c0ff1Tb4b4b4,
Te6edf3reTff7b72.Td2a8ffMTb4b4b4,
Tb4b4b4)
Te6edf3changelog Tff7b72= Te6edf3reTff7b72.Td2a8ffsubTb4b4b4(Ta5d6ffrTa5d6ff"Ta5d6ff(?<=/tree/)masterTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3versionTffd700}Ta5d6ff"Tb4b4b4, Te6edf3changelogTb4b4b4, T79c0ff1Tb4b4b4, Te6edf3reTff7b72.Td2a8ffMTb4b4b4)
Te6edf3changelog Tff7b72= Te6edf3reTff7b72.Td2a8ffsubTb4b4b4(
Ta5d6ffrfTa5d6ff"Ta5d6ff(?<=compare Tffd700{Te6edf3previous_versionTffd700}Ta5d6ff/)masterTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3versionTffd700}Ta5d6ff"Tb4b4b4,
Te6edf3changelogTb4b4b4,
T79c0ff1Tb4b4b4,
Te6edf3reTff7b72.Td2a8ffMTb4b4b4,
Tb4b4b4)
Te6edf3changelog Tff7b72= Te6edf3reTff7b72.Td2a8ffsubTb4b4b4(
Ta5d6ffrfTa5d6ff"Ta5d6ff(?<=compare/Tffd700{Te6edf3previous_versionTffd700}Ta5d6ff...)masterTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3versionTffd700}Ta5d6ff"Tb4b4b4,
Te6edf3changelogTb4b4b4,
T79c0ff1Tb4b4b4,
Te6edf3reTff7b72.Td2a8ffMTb4b4b4,
Tb4b4b4)
Te6edf3changelog Tff7b72= Te6edf3reTff7b72.Td2a8ffsubTb4b4b4(
Ta5d6ffrTa5d6ff"Ta5d6ff(?<=pip install )https[Ta5d6ff\Ta5d6ffS]*/master.zip(?=Ta5d6ff\Ta5d6ffn)Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ffkivymd==Tffd700{Te6edf3versionTffd700}Ta5d6ff"Tb4b4b4,
Te6edf3changelogTb4b4b4,
T79c0ff1Tb4b4b4,
Te6edf3reTff7b72.Td2a8ffMTb4b4b4,
Tb4b4b4)

T8b949e# Write changelog
Tffa657openTb4b4b4(Te6edf3version_fileTb4b4b4, Ta5d6ff"Ta5d6ffwtTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwriteTb4b4b4(Te6edf3changelogTb4b4b4)
T8b949e# Remove unreleased changelog
Te6edf3osTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3unreleased_fileTb4b4b4)
T8b949e# Update index file
Te6edf3success Tff7b72= Te6edf3replace_in_fileTb4b4b4(
Ta5d6ff"Ta5d6ff/changelog/unreleased.rstTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ff/changelog/Tffd700{Te6edf3versionTffd700}Ta5d6ff.rstTa5d6ff"Tb4b4b4, Te6edf3index_file
Tb4b4b4)
Tff7b72if Te6edf3test Tff7b72and Tff7b72not Te6edf3successTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffCouldnTa5d6ff'Ta5d6fft update changelog file.Ta5d6ff"Tb4b4b4, Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)


Tff7b72def Td2a8ffcreate_unreleased_changelogTb4b4b4(
Te6edf3index_fileTb4b4b4,
Te6edf3unreleased_fileTb4b4b4,
Te6edf3versionTb4b4b4,
Te6edf3askTb4b4b4: Tffa657bool Tff7b72= Tff7b72TrueTb4b4b4,
Te6edf3testTb4b4b4: Tffa657bool Tff7b72= Tff7b72FalseTb4b4b4,
Tb4b4b4)Tb4b4b4:
T8b949e"""Create unreleased.rst by template."""

T8b949e# Check if unreleased file exists
Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffexistsTb4b4b4(Te6edf3unreleased_fileTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3ask Tff7b72and Tffa657inputTb4b4b4(
Ta5d6fffTa5d6ff'Ta5d6ffDo you want to rewrite Ta5d6ff"Tffd700{Te6edf3unreleased_fileTffd700}Ta5d6ff"Ta5d6ff? (y)Ta5d6ff'
Tb4b4b4) Tff7b72not Tff7b72in Tb4b4b4(
Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffyTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffyesTa5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3exitTb4b4b4(T79c0ff0Tb4b4b4)
T8b949e# Generate unreleased changelog
Te6edf3changelog Tff7b72= Ta5d6fffTa5d6ff"""Ta5d6ffUnreleased
Ta5d6ff----------

Ta5d6ff See on GitHub: `branch master <https://github.com/kivymd/KivyMD/tree/master>`_ | `compare Tffd700{Te6edf3versionTffd700}Ta5d6ff/master <https://github.com/kivymd/KivyMD/compare/Tffd700{Te6edf3versionTffd700}Ta5d6ff...master>`_

Ta5d6ff .. code-block:: bash

Ta5d6ff pip install https://github.com/kivymd/KivyMD/archive/master.zip

Ta5d6ff* Bug fixes and other minor improvements.
Ta5d6ff"""
T8b949e# Create unreleased file
Tffa657openTb4b4b4(Te6edf3unreleased_fileTb4b4b4, Ta5d6ff"Ta5d6ffwtTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwriteTb4b4b4(Te6edf3changelogTb4b4b4)
T8b949e# Update index file
Te6edf3success Tff7b72= Te6edf3replace_in_fileTb4b4b4(
Ta5d6ffrTa5d6ff"Ta5d6ff(?<=ChangelogTa5d6ff\Ta5d6ffn=========Ta5d6ff\Ta5d6ffnTa5d6ff\Ta5d6ffn)Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff.. include:: /changelog/unreleased.rstTffea00\nTa5d6ff"Tb4b4b4,
Te6edf3index_fileTb4b4b4,
Tb4b4b4)
Tff7b72if Te6edf3test Tff7b72and Tff7b72not Te6edf3successTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffCouldnTa5d6ff'Ta5d6fft update changelog index file.Ta5d6ff"Tb4b4b4, Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)


Tff7b72def Td2a8ffmainTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3parser Tff7b72= Te6edf3create_argument_parserTb4b4b4(Tb4b4b4)
Te6edf3args Tff7b72= Te6edf3parserTff7b72.Td2a8ffparse_argsTb4b4b4(Tb4b4b4)

Te6edf3release Tff7b72= Te6edf3argsTff7b72.Td2a8ffcommand Tff7b72== Ta5d6ff"Ta5d6ffreleaseTa5d6ff"
Te6edf3version Tff7b72= Te6edf3argsTff7b72.Td2a8ffversion Tff7b72or Ta5d6ff"Ta5d6ff0.0.0Ta5d6ff"
Te6edf3next_version Tff7b72= Te6edf3argsTff7b72.Td2a8ffnext_version Tff7b72or Tb4b4b4(
Tb4b4b4(Te6edf3versionTb4b4b4[Tb4b4b4:Tff7b72-T79c0ff1Tb4b4b4] Tff7b72+ Tffa657strTb4b4b4(Tffa657intTb4b4b4(Te6edf3versionTb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]Tb4b4b4) Tff7b72+ T79c0ff1Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff.dev0Ta5d6ff"Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffrcTa5d6ff" Tff7b72not Tff7b72in Te6edf3version
Tff7b72else Te6edf3version
Tb4b4b4)
Te6edf3prepare Tff7b72= Te6edf3argsTff7b72.Td2a8ffcommand Tff7b72== Ta5d6ff"Ta5d6ffprepareTa5d6ff"
Te6edf3test Tff7b72= Te6edf3argsTff7b72.Td2a8ffcommand Tff7b72== Ta5d6ff"Ta5d6fftestTa5d6ff"
Te6edf3ask Tff7b72= Te6edf3argsTff7b72.Td2a8ffyes Tff7b72is Tff7b72not Tff7b72True
Te6edf3push Tff7b72= Te6edf3argsTff7b72.Td2a8ffpush Tff7b72is Tff7b72True

Tff7b72if Te6edf3release Tff7b72and Te6edf3version Tff7b72== Ta5d6ff"Ta5d6ff0.0.0Ta5d6ff"Tb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(Ta5d6ff"Ta5d6ffPlease specify new version.Ta5d6ff"Tb4b4b4)
Te6edf3version_re Tff7b72= Ta5d6ffrTa5d6ff"Ta5d6ff[Ta5d6ff\Ta5d6ffd]Ta5d6ff{Ta5d6ff1,3}Ta5d6ff\Ta5d6ff.[Ta5d6ff\Ta5d6ffd]Ta5d6ff{Ta5d6ff1,3}Ta5d6ff\Ta5d6ff.[Ta5d6ff\Ta5d6ffd]Ta5d6ff{Ta5d6ff1,3}(rc[Ta5d6ff\Ta5d6ffd]Ta5d6ff{Ta5d6ff1,3})?Ta5d6ff"
Tff7b72if Tff7b72not Te6edf3reTff7b72.Td2a8ffmatchTb4b4b4(Te6edf3version_reTb4b4b4, Te6edf3versionTb4b4b4)Tb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(Ta5d6fffTa5d6ff'Ta5d6ffVersion Ta5d6ff"Tffd700{Te6edf3versionTffd700}Ta5d6ff"Ta5d6ff doesnTffea00\'Ta5d6fft match template.Ta5d6ff'Tb4b4b4)
Te6edf3next_version_re Tff7b72= Tb4b4b4(
Ta5d6ffrTa5d6ff"Ta5d6ff[Ta5d6ff\Ta5d6ffd]Ta5d6ff{Ta5d6ff1,3}Ta5d6ff\Ta5d6ff.[Ta5d6ff\Ta5d6ffd]Ta5d6ff{Ta5d6ff1,3}Ta5d6ff\Ta5d6ff.[Ta5d6ff\Ta5d6ffd]Ta5d6ff{Ta5d6ff1,3}(Ta5d6ff\Ta5d6ff.dev[Ta5d6ff\Ta5d6ffd]Ta5d6ff{Ta5d6ff1,3}|rc[Ta5d6ff\Ta5d6ffd]Ta5d6ff{Ta5d6ff1,3})?Ta5d6ff"
Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3reTff7b72.Td2a8ffmatchTb4b4b4(Te6edf3next_version_reTb4b4b4, Te6edf3next_versionTb4b4b4)Tb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(Ta5d6fffTa5d6ff'Ta5d6ffNext version Ta5d6ff"Tffd700{Te6edf3next_versionTffd700}Ta5d6ff"Ta5d6ff doesnTffea00\'Ta5d6fft match template.Ta5d6ff'Tb4b4b4)
Tff7b72if Te6edf3test Tff7b72and Te6edf3pushTb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(Ta5d6ff"Ta5d6ffDonTa5d6ff'Ta5d6fft use --push with test.Ta5d6ff"Tb4b4b4)

Te6edf3repository_root Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffnormpathTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Tff7b72__file__Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tb4b4b4)
Tb4b4b4)

T8b949e# Change directory to repository root
Te6edf3osTff7b72.Td2a8ffchdirTb4b4b4(Te6edf3repository_rootTb4b4b4)

Te6edf3previous_version Tff7b72= Te6edf3get_previous_versionTb4b4b4(Tb4b4b4)

T8b949e# Print info
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffPrevious version: Tffd700{Te6edf3previous_versionTffd700}Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffNew version: Tffd700{Te6edf3versionTffd700}Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffNext version: Tffd700{Te6edf3next_versionTffd700}Ta5d6ff"Tb4b4b4)

Te6edf3update_iconsTb4b4b4(Te6edf3make_commitTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3git_cleanTb4b4b4(Te6edf3askTff7b72=Te6edf3askTb4b4b4)
Te6edf3run_pre_commitTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3prepareTb4b4b4:
Te6edf3git_pushTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3askTff7b72=Te6edf3askTb4b4b4, Te6edf3pushTff7b72=Te6edf3pushTb4b4b4)
Tff7b72return

Te6edf3update_init_pyTb4b4b4(Te6edf3versionTb4b4b4, Te6edf3is_releaseTff7b72=Tff7b72TrueTb4b4b4, Te6edf3testTff7b72=Te6edf3testTb4b4b4)
Te6edf3update_readmeTb4b4b4(Te6edf3previous_versionTb4b4b4, Te6edf3versionTb4b4b4, Te6edf3testTff7b72=Te6edf3testTb4b4b4)

Te6edf3changelog_index_file Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3repository_rootTb4b4b4, Ta5d6ff"Ta5d6ffdocsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsourcesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffchangelogTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffindex.rstTa5d6ff"
Tb4b4b4)
Te6edf3changelog_unreleased_file Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3repository_rootTb4b4b4, Ta5d6ff"Ta5d6ffdocsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsourcesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffchangelogTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffunreleased.rstTa5d6ff"
Tb4b4b4)
Te6edf3changelog_version_file Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3repository_rootTb4b4b4, Ta5d6ff"Ta5d6ffdocsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsourcesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffchangelogTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3versionTffd700}Ta5d6ff.rstTa5d6ff"
Tb4b4b4)
Te6edf3move_changelogTb4b4b4(
Te6edf3changelog_index_fileTb4b4b4,
Te6edf3changelog_unreleased_fileTb4b4b4,
Te6edf3previous_versionTb4b4b4,
Te6edf3changelog_version_fileTb4b4b4,
Te6edf3versionTb4b4b4,
Te6edf3testTff7b72=Te6edf3testTb4b4b4,
Tb4b4b4)

Te6edf3git_commitTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffKivyMD Tffd700{Te6edf3versionTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3git_tagTb4b4b4(Te6edf3versionTb4b4b4)

Te6edf3branches_to_push Tff7b72= Tb4b4b4[Tb4b4b4]
T8b949e# Move branch stable to stable-x.x.x
T8b949e# command(["git", "branch", "-m", "stable", f"stable-{old_version}"])
T8b949e# branches_to_push.append(f"stable-{old_version}")
T8b949e# Create branch stable
T8b949e# command(["git", "branch", "stable"])
T8b949e# command(["git", "push", "--force", "origin", "master:stable"])
T8b949e# branches_to_push.append("stable")

Te6edf3create_unreleased_changelogTb4b4b4(
Te6edf3changelog_index_fileTb4b4b4,
Te6edf3changelog_unreleased_fileTb4b4b4,
Te6edf3versionTb4b4b4,
Te6edf3testTff7b72=Te6edf3testTb4b4b4,
Tb4b4b4)
Te6edf3update_init_pyTb4b4b4(Te6edf3next_versionTb4b4b4, Te6edf3is_releaseTff7b72=Tff7b72FalseTb4b4b4, Te6edf3testTff7b72=Te6edf3testTb4b4b4)
Te6edf3git_commitTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffKivyMD Tffd700{Te6edf3next_versionTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3git_pushTb4b4b4(Te6edf3branches_to_pushTb4b4b4, Te6edf3askTff7b72=Te6edf3askTb4b4b4, Te6edf3pushTff7b72=Te6edf3pushTb4b4b4)


Tff7b72def Td2a8ffcreate_argument_parserTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3parser Tff7b72= Te6edf3ArgumentParserWithHelpTb4b4b4(
Te6edf3progTff7b72=Ta5d6ff"Ta5d6ffmake_release.pyTa5d6ff"Tb4b4b4,
Te6edf3allow_abbrevTff7b72=Tff7b72FalseTb4b4b4,
T8b949e# usage="%(prog)s command [options] extensions [--exclude extensions]",
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--yesTa5d6ff"Tb4b4b4,
Te6edf3actionTff7b72=Ta5d6ff"Ta5d6ffstore_trueTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffremove and modify files without asking.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--pushTa5d6ff"Tb4b4b4,
Te6edf3actionTff7b72=Ta5d6ff"Ta5d6ffstore_trueTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffpush changes to remote repository. Use only with release and prepare.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ffcommandTa5d6ff"Tb4b4b4,
Te6edf3choicesTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffreleaseTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffprepareTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftestTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffrelease will update icons, modify files and make tag.Tffea00\nTa5d6ff"
Ta5d6ff"Ta5d6ffprepare will update icons and format files.Tffea00\nTa5d6ff"
Ta5d6ff"Ta5d6fftest will check if script can modify each file correctly.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4,
Tffa657typeTff7b72=Tffa657strTb4b4b4,
Te6edf3nargsTff7b72=Ta5d6ff"Ta5d6ff?Ta5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffnew version in format n.n.n (1.111.11).Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ffnext_versionTa5d6ff"Tb4b4b4,
Tffa657typeTff7b72=Tffa657strTb4b4b4,
Te6edf3nargsTff7b72=Ta5d6ff"Ta5d6ff?Ta5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffdevelopment version in format n.n.n.devn (1.111.11.dev0).Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72return Te6edf3parser


Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Te6edf3mainTb4b4b4(Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────